#pragma once
#include"./Logger.hpp"

namespace zlog
{
  //1.提供获取指定日志器的全局接口(避免用户自己操作单例对象)
   Logger::ptr getLogger(const string& name)
   {
     return LoggerManager::getInstance().getLogger(name);
   }

   Logger::ptr getrootLogger()
   {
      return LoggerManager::getInstance().getrootLogger();
   }
   //2.使用宏函数对日志器的接口进行代理(这样用户使用日志器的接口不用手动指明预处理符__FILE__和__LINE__)
   #define debug(fmt,...)  debug(__FILE__,__LINE__,fmt,##__VA_ARGS__)
   #define info(fmt,...)   info(__FILE__,__LINE__,fmt,##__VA_ARGS__)
   #define warn(fmt,...)   warn(__FILE__,__LINE__,fmt,##__VA_ARGS__)
   #define error(fmt,...)  error(__FILE__,__LINE__,fmt,##__VA_ARGS__)
   #define fatal(fmt,...)  fatal(__FILE__,__LINE__,fmt,##__VA_ARGS__)
   //3.提供宏函数,直接通过默认日志器进行日志的标准输出打印(不用获取日志器了)
   #define DEBUG(fmt,...)  getrootLogger()->debug(fmt,##__VA_ARGS__)
   #define INFO(fmt,...)  getrootLogger()->info(fmt,##__VA_ARGS__)
   #define WARN(fmt,...)  getrootLogger()->warn(fmt,##__VA_ARGS__)
   #define ERROR(fmt,...)  getrootLogger()->error(fmt,##__VA_ARGS__)
   #define FATAL(fmt,...)  getrootLogger()->fatal(fmt,##__VA_ARGS__)


}